<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui">
    <p:dialog id="verEstadoDialogId" closeOnEscape="true" header="Procesando Archivo" modal="true" onShow="upperInput();"
              widgetVar="wvverEstadoDialog" resizable="false" showEffect="fade" hideEffect="fade">
        <p:panel id="ProcesoEstado">
            <h:form id="ProcesoEstadoForm" prependId="true">
                <h:panelGrid id="gridBusqueda3Dialog" columns="2" styleClass="centered">
                    <p:commandButton ajax="true" value="Ver Reportes"
                                     actionListener="#{jsfBean.verReportes}"
                                     update=":messages">
                    </p:commandButton>
                    <p:commandButton ajax="true" value="Cancelar" onclick="wvverEstadoDialog.hide()"
                                     type="button"
                                     immediate="true" process="@none"/>
                </h:panelGrid>
            </h:form>
        </p:panel>
    </p:dialog>
    <p:dialog id="cargarArchivo" closeOnEscape="true" header="Cargar Archivo" onShow="upperInput();" modal="true" widgetVar="wvCargarArchivo" resizable="false"
              showEffect="fade" hideEffect="fade">
        <p:panel>
            <h:form id="cargarArchivoForm" prependId="true">
                <p:fileUpload fileUploadListener="#{jsfBean.uploadFileAction}"
                              mode="advanced" cancelLabel="Cancelar" uploadLabel="Cargar Archivo"
                              label="Seleccionar Archivo"
                              update=":messages"  multiple="true"
                              sizeLimit="524288000"
                              allowTypes="/(\.|\/)(csv)$/"/>
                <h:panelGrid columns="2" styleClass="centered">

                <p:outputLabel value="Comentario" for="txtComentario"/>
                <p:inputText id="txtComentario" size="50" maxlength="100" value="#{jsfBean.nuevoCheckPoint.comentario}"
                             required="true" requiredMessage="*"/>

                <p:outputLabel value="Fecha de Corte" for="txtFechaCorte" rendered="#{jsfBean.verFechaCorte}"/>
                <p:calendar id="txtFechaCorte" required="true" requiredMessage="*" rendered="#{jsfBean.verFechaCorte}"
                            value="#{jsfBean.nuevoCheckPoint.fechaCorte}"
                            size="10" navigator="true" pattern="dd/MM/yyyy"/>
                </h:panelGrid>
                <h:panelGrid columns="2" styleClass="centered">
                    <p:commandButton ajax="true" value="Procesar Documento"
                                     actionListener="#{jsfBean.cargarInformacion}"
                                     update=":cargarArchivoForm :frmReporte :dlgCuentaContable :messages">
                        <f:attribute name="dialogName" value="wvCargarArchivo"/>
                    </p:commandButton>

                    <p:commandButton ajax="true" value="Cancelar" onclick="wvCargarArchivo.hide()"
                                     type="button"
                                     immediate="true" process="@none"/>
                </h:panelGrid>
            </h:form>
        </p:panel>
    </p:dialog>
    <p:dialog id="dlgCuentaContable" onShow="upperInput();" header="Cuentas contables no registradas" modal="true"
              width="700"  closeOnEscape="false" closable="false"
              widgetVar="wvDlgCuentaContable" resizable="false" showEffect="fade" hideEffect="fade">
        <p:panel id="Seleccionar">
            <h:form id="frmCuentaContable">
                <!-- Panel de resultados (donde está la tabla)  -->
                <p:panel id="panelResultadosSeleccionar" header="Resultados">
                    <p:toolbar>
                        <p:toolbarGroup align="left">
                            <p:commandButton id="cmdAsignarCuenta" value="Asignar Agrupación" ajax="true"
                                             update=":messages :dlgAgrupacion"
                                             actionListener="#{jsfBean.asignarAgrupacionAction}"
                                    >

                            </p:commandButton>
                        </p:toolbarGroup>
                        <p:toolbarGroup align="left">
                            <p:commandButton id="cmdFinalizar" value="Finalizar" ajax="true"
                                             update=":frmReporte"
                                             actionListener="#{jsfBean.finalizarAction}"
                                    >
                            </p:commandButton>

                        </p:toolbarGroup>
                        <p:toolbarGroup align="right">
                            <p:commandButton id="cmdSelectCuenta" value="Seleccionar" ajax="true"
                                             actionListener="#{jsfBean.selectAll}"
                                             update=":frmCuentaContable :messages"/>
                            <p:commandButton id="cmdUnSelectCuenta" value="Quitar Selección" ajax="true"
                                             actionListener="#{jsfBean.unSelectAll}"
                                             update=":frmCuentaContable :messages">
                            </p:commandButton>
                            <p:commandButton id="cmdCerrar" value="Cerrar" ajax="true"
                                             update=":frmReporte"
                                             actionListener="#{jsfBean.cerrarAction}"
                                    >
                            </p:commandButton>
                        </p:toolbarGroup>
                    </p:toolbar>
                    <p:dataTable id="tblCuentaContable" value="#{jsfBean.cuentaContableSinAgrupacionList}"
                                 scrollable="true" scrollHeight="150"   style="width: 600px"
                                 var="cuentaSelect" rowKey="#{cuentaSelect.cuentaContableId}"
                                 paginatorPosition="bottom" emptyMessage="No existen registros"
                                 selection="#{jsfBean.nuevaCuentaContable}" editable="true" editMode="cell"
                                 selectionMode="single"
                                 >
                        <p:ajax event="cellEdit" listener="#{jsfBean.onCellEdit}"
                                update=":messages :frmCuentaContable:tblCuentaContable"/>
                        <p:column headerText="" style="text-align: center;width: 20px" >
                            <p:selectBooleanCheckbox value="#{cuentaSelect.seleccionado}"
                                                     disabled="#{not cuentaSelect.asignarAgrupacion}">
                            </p:selectBooleanCheckbox>
                        </p:column>
                        <p:column style="text-align: left;width: 40px">
                            <f:facet name="header">
                                <h:outputText value="Cuenta Mayor"/>
                            </f:facet>
                            <h:outputText value="#{cuentaSelect.cuentaContableId}"/>
                        </p:column>
                        <p:column headerText="Descripción" style="width:130px">
                            <p:cellEditor rendered="#{jsfBean.administrador}">
                                <f:facet name="output"><h:outputText value="#{cuentaSelect.descripcion}"/></f:facet>
                                <f:facet name="input"><p:inputText id="modelInput" value="#{cuentaSelect.descripcion}"
                                                                   style="width:96%"/></f:facet>
                            </p:cellEditor>
                            <h:outputText rendered="#{not jsfBean.administrador}" value="#{cuentaSelect.descripcion}"/>
                        </p:column>
                        <p:column style="text-align: left;width: 80px">
                            <f:facet name="header">
                                <h:outputText value="Agrupación"/>
                            </f:facet>
                            <h:outputText value="#{cuentaSelect.agrupacionNombre}"/>
                        </p:column>
                    </p:dataTable>
                </p:panel>
            </h:form>
        </p:panel>
    </p:dialog>
    <p:dialog id="dlgAgrupacion" closeOnEscape="true" header="Agrupación" modal="true"  onShow="upperInput();"
              widgetVar="wvDlgAgrupacion" resizable="false" showEffect="fade" hideEffect="fade">
        <p:panel id="SeleccionarAgrupacion">

            <h:form id="frmSelecionarAgrupacion">
                <p:panel id="pnlSeleccionarAgrupacion" header="Seleccionar Agrupación">
                    <h:panelGrid columns="3">
                        <p:outputLabel for="cmbAgrupacion" value="Asignar a"/>

                        <p:selectOneMenu id="cmbAgrupacion" label="Agrupaciones"
                                         converter="#{managerAgrupacionDTOConverter}" required="true"
                                         requiredMessage="*"    style="width: 230px"
                                         value="#{jsfBean.agrupacionSelect}"
                                         filterText="Filter" filterMatchMode="startsWith"
                                         panelStyle="width:220px"
                                >
                            <f:selectItems value="#{jsfBean.cmbAgrupacion}" var="agrupacionItem"
                                           itemLabel="#{agrupacionItem.nombre}" itemValue="#{agrupacionItem}"/>

                        </p:selectOneMenu>

                        <p:commandButton ajax="true" value="Guardar" id="cmbAsociarAgrupacion"
                                         actionListener="#{jsfBean.persistAction}"
                                         update=":frmCuentaContable:tblCuentaContable :frmReporte :frmSelecionarAgrupacion :messages">
                            <f:attribute name="dialogName" value="wvDlgAgrupacion"/>
                        </p:commandButton>
                    </h:panelGrid>
                </p:panel>
            </h:form>
            <h:form id="frmAgrupacion">
                <p:panel id="pnlCrearAgrupacion" header="Crear Agrupación" toggleable="true" collapsed="true" >

                    <h:panelGrid id="gridBusquedaDialog" columns="3">


                        <h:outputLabel for="inputDescripcion" value="Descripción"/>
                        <p:inputText id="inputDescripcion" value="#{jsfBean.nuevaAgrupacion.nombre}"
                                     size="25" maxlength="100" required="true" requiredMessage="*"/>
                        <p:message for="inputDescripcion" display="text"/>

                        <h:outputLabel for="cmbTipoCuenta" value="Tipo Cuenta"/>
                        <p:selectOneMenu id="cmbTipoCuenta" value="#{jsfBean.nuevaAgrupacion.tipo}"
                                         effect="fade" disabled="true"  style="width: 150px"
                                         required="true" requiredMessage="*"
                                >
                            <f:selectItem itemValue="" itemLabel="Seleccione"/>
                            <f:selectItems value="#{jsfBean.allTipoCuenta}"
                                           var="tipoSelect" itemLabel="#{tipoSelect.nombre}" itemValue="#{tipoSelect}"/>
                        </p:selectOneMenu>
                        <p:message for="cmbTipoCuenta" display="text"/>

                        <h:outputLabel for="cmbSigno" value="Signo Natural"/>
                        <p:selectOneMenu id="cmbSigno" value="#{jsfBean.nuevaAgrupacion.signoNatural}"
                                         effect="fade"  style="width: 150px"
                                         required="true" requiredMessage="*"
                                >
                            <f:selectItem itemValue="" itemLabel="Seleccione"/>
                            <f:selectItems value="#{jsfBean.allSigno}"
                                           var="signoSelect" itemLabel="#{signoSelect.nombre}"
                                           itemValue="#{signoSelect}"/>
                        </p:selectOneMenu>
                        <p:message for="cmbSigno" display="text"/>

                        <h:outputLabel for="inputEstado" value="Estado"/>
                        <p:selectOneMenu id="inputEstado" value="#{jsfBean.nuevaAgrupacion.estado}"
                                         effect="fade"   disabled="true"
                                         required="true" requiredMessage="*"
                                >
                            <f:selectItem itemValue="" itemLabel="Seleccione"/>
                            <f:selectItems value="#{jsfBean.allEstado}"
                                           var="estadoSelect" itemLabel="#{estadoSelect.nombre}"
                                           itemValue="#{estadoSelect}"/>
                        </p:selectOneMenu>
                        <p:message for="inputEstado" display="text"/>

                    </h:panelGrid>
                    <h:panelGrid id="gridBusqueda3Dialog" columns="2" styleClass="centered">
                        <p:commandButton ajax="true" value="Guardar" id="cmbCrearAgrupacion"
                                         actionListener="#{jsfBean.persistAction}"
                                         update=":frmCuentaContable:tblCuentaContable :messages :frmReporte  :frmAgrupacion">
                            <f:attribute name="dialogName" value="wvDlgAgrupacion"/>
                        </p:commandButton>
                        <p:commandButton ajax="true" value="Cancelar" id="btnCancelar" onclick="wvDlgAgrupacion.hide()"
                                         type="button"
                                         immediate="true" process="@none"/>
                    </h:panelGrid>
                </p:panel>


            </h:form>
        </p:panel>
    </p:dialog>
</ui:composition>
